/**
 * 
 */
package com.desksoft.ecommerce.vo;

import java.io.Serializable;

/***************************************
 * 版权所有：杭州迪科软件 保留所有权利
 * 创建日期: 
 * 创建作者：yejw
 * 文件名称：
 * 版本：
 * 功能：
 * 最后修改时间：
 * 修改记录：
 *****************************************/
public class KeyAndValue<K, V> implements Serializable {

	private static final long serialVersionUID = 7045868840432824L;

	private K key;

	private V value;

	public KeyAndValue() { }

	public KeyAndValue(K key, V value) {
		this.key = key;
		this.value = value;
	}

	public K getKey() {
		return key;
	}

	public void setKey(K key) {
		this.key = key;
	}

	public V getValue() {
		return value;
	}

	public void setValue(V value) {
		this.value = value;
	}

	@SuppressWarnings("unchecked")
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;

		KeyAndValue<K, V> other = (KeyAndValue<K, V>) obj;

		if (other.key.getClass() != this.key.getClass()) {
			return false;
		}

		if (other.value.getClass() != this.value.getClass()) {
			return false;
		}

		if (this.key instanceof Number && this.value instanceof Number) {
			if ((((Number) key).longValue() == ((Number) other.key).longValue())
					&& (((Number) value).longValue() == ((Number) other.value)
							.longValue())) {
				return true;
			}
			return false;
		}

		return true;
	}

	@Override
	public int hashCode() {
		int code = 0;
		final int prime = 31;
		int result = 1;
		if (this.key instanceof Number && this.value instanceof Number) {
			code = ((Number) key).intValue() + ((Number) value).intValue();
		}
		result = prime * result + code;
		return result;
	}

}
